home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / jam / jamdisk1 / bio / source.run / ffp.h < prev   
Encoding:
C/C++ Source or Header  |  1992-07-07  |  3.1 KB  |  93 lines

  1. /* ffp.h
  2.  *
  3.  *  #include header file facilitating the use of the Motorola Fast Floating
  4.  *  Point (FFP) routines in programs compiled with Lattice C
  5.  *
  6.  *  by Kevin Rahe at Reliable Software
  7.  *
  8.  *  May be freely distributed (but only FREEly!)
  9. */
  10.  
  11. /*    FFP = Motorola floating point variable      int = long integer
  12.  
  13.                             FORMAT              RETURNS POSSIBLE VALS.
  14. */
  15. extern    int    SPFix(); /* SPFix(FFP)        int             */
  16. extern    int    SPFlt(); /* SPFlt(int)        FFP              */
  17. extern  int    SPCmp(); /* SPCmp(FFP,FFP)    int  0=equal, 1=unequal  */
  18. extern    int    SPTst(); /* SPTst(FFP)        int  -1, 0, 1         */
  19. extern    int    SPAbs(); /* SPAbs(FFP)        FFP  positive         */
  20. extern    int    SPNeg(); /* SPNeg(FFP)        FFP             */
  21. extern    int    SPAdd(); /* SPAdd(FFP,FFP)    FFP             */
  22. extern    int    SPSub(); /* SPSub(FFP,FFP)    FFP  subt. 1st from 2nd  */
  23. extern    int    SPMul(); /* SPMul(FFP,FFP)    FFP             */
  24. extern    int    SPDiv(); /* SPDiv(FFP,FFP)    FFP  div. 2nd by 1st     */
  25. extern    int    SPCeil();/* SPCeil(FFP)        FFP  integer above FFP   */
  26. extern    int    SPFloor();/* SPFloor(FFP)    FFP  integer below FFP   */
  27.  
  28. extern    int    SPAtan();/* SPAtan(FFP)        FFP  ArcTangent         */
  29. extern    int    SPSin(); /* SPSin(FFP)          FFP                      */
  30. extern    int    SPCos(); /* SPCos(FFP)          FFP                      */
  31. extern    int    SPTan(); /* SPTan(FFP)          FFP                      */
  32. extern    int    SPSincos();/*  SPSincos(&FFP1,FFP2)  returns the Sine of
  33.                                FFP2, and Cosine of FFP2 in FFP1)  */
  34. extern  int    SPSinh();/* SPSinh(FFP1)        FFP                      */
  35. extern    int    SPCosh();/* SPCosh(FFP1)        FFP                      */
  36. extern    int    SPTanh();/* SPTanh(FFP1)        FFP                      */
  37. extern    int    SPExp(); /* SPExp(FFP1)         FFP  e ^FFP1             */
  38. extern    int    SPLog(); /* SPLog(FFP1)         FFP  log to base e       */
  39. extern    int    SPLog10();/* SPLog10(FFP1)      FFP  log to base 10      */
  40. extern    int    SPPow(); /* SPPow(FFP1,FFP2)    FFP  FFP2 ^FFP1          */
  41. extern    int    SPSqrt();/* SPsqrt(FFP1)        FFP                      */
  42. extern    int    SPTieee();    /*  converts FFP to IEEE  */
  43. extern    int    SPFieee();    /*  converts IEEE to FFP  */
  44.  
  45. int MathBase;       /*  basic FFP lib pointer  */
  46. int MathTransBase;    /*  transendental FFP lib pointer  */
  47.  
  48. union spfloat        /* kludge so floats can be passed as single-precision */
  49. {
  50.     float f;
  51.     int   i;
  52. };
  53.  
  54. #define FFP    long    /*  use integers to store FFP numbers so the FFP
  55.                 library routines can be called with no problems  */
  56.  
  57. float makefloat (in_val)    /*  convert FFP to IEEE and return  */
  58. int in_val;
  59. {
  60.     union spfloat k;    /*  union as defined above  */
  61.     k.i = SPTieee(in_val);
  62.     return (k.f);
  63. }
  64.  
  65. int makeFFP (in_val)        /*  convert IEEE to FFP and return  */
  66. float in_val;
  67. {
  68.     union spfloat k;    /*  union as defined above  */
  69.     k.f = in_val;
  70.     return (SPFieee(k.i));
  71. }
  72.  
  73. int OpenMathLibs()        /*  returns FALSE if error  */
  74. {
  75.     int stat = 1;
  76.  
  77.     if ( (MathBase = OpenLibrary("mathffp.library", 0L)) == 0L)
  78.         stat = 0;
  79.  
  80.     if ( (MathTransBase = OpenLibrary("mathtrans.library", 0L)) == 0L)
  81.         {
  82.         CloseLibrary(MathBase);
  83.         stat = 0;
  84.         }
  85.     return(stat);
  86. }
  87.  
  88. CloseMathLibs()
  89. {
  90.     CloseLibrary(MathTransBase);
  91.     CloseLibrary(MathBase);
  92. }
  93.